[tests] implement 1.4.3 (10.3) default route advertisement test#3443
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3443 +/- ##
===========================================
- Coverage 55.77% 34.94% -20.84%
===========================================
Files 87 143 +56
Lines 6890 17247 +10357
Branches 0 1413 +1413
===========================================
+ Hits 3843 6027 +2184
- Misses 3047 10889 +7842
- Partials 0 331 +331 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
This commit addresses unresolved review comments on PR openthread#3443: - Add 'iproute2' to border-router Dockerfile and use 'docker exec' instead of 'nsenter' to delete the default route inside the OTBR container. This removes the requirement for root privileges on the host VM/runner to run the tests. - Add 'procps' package to the test client image in test_dind_dns_sd.sh to ensure 'pgrep' and 'pkill' commands are available for radvd. - Include radvd and tcpdump logs from eth2-server in test_teardown. - Print radvd.log from eth2-server if Step 10 ping unexpectedly succeeded to ease debugging of routing issues. Note: The suggestion to use SIGHUP (pkill -HUP radvd) was evaluated but rejected because radvd does not immediately send a Router Lifetime 0 RA upon reload, causing the default route to remain active on the DUT and failing the verification in Step 10. The original kill/restart approach is maintained as it guarantees immediate route withdrawal.
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces two new integration tests (dind_1_4_pic_tc_1.exp and dind_1_4_pic_tc_3.exp) to verify IPv6 connectivity using DHCPv6-PD delegated OMR prefix and IPv6 default route advertisement. To support these tests, the Dockerfile for the border router has been updated to include iproute2, and the test client image setup script has been expanded to install additional network utilities such as dnsmasq, python3-scapy, radvd, tcpdump, and procps. The test runner and teardown scripts have also been updated to execute these new tests and collect relevant logs. There are no review comments to address, and no further feedback is provided.
Implement the Thread 1.4 test case "10.3. [1.4] [CERT] IPv6 default route advertisement" in the docker-in-docker integration framework. Changes: * Create tests/scripts/expect/dind_1_4_pic_tc_3.exp to execute the 14-step test procedure verifying default route advertisement, withdrawal, and recovery. * Configure accept_ra=2 on the DUT container's eth0 interface and delete Docker's static default route using nsenter. This allows the DUT to behave realistically by dynamically configuring default routes and global IPs on the infrastructure link solely via RAs. * Modify radvd prefix on the CPE container to a global unicast address (GUA) prefix 2001:db8:1::/64 to ensure an active non-ULA prefix is present as required by the test plan. * Reconfigure radvd process controls to use 'kill' and 'pgrep' instead of 'killall' since the container image lacks 'killall'. * Register dind_1_4_pic_tc_3.exp in tests/scripts/test_dind_dns_sd.sh.
Implement the Thread 1.4 test case "10.3. [1.4] [CERT] IPv6 default route advertisement" in the docker-in-docker integration framework.
Changes: